package com.fg.cloud.manager.service.order;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.fg.cloud.common.PageUtils;
import com.fg.cloud.common.Result;
import com.fg.cloud.common.ServiceException;
import com.fg.cloud.manager.entry.BaseEntity;
import com.fg.cloud.manager.entry.order.OrderInfoEntity;
import com.fg.cloud.manager.entry.order.vo.OrderDetailVo;
import com.fg.cloud.manager.entry.order.vo.OrderInfoVo;
import com.fg.cloud.manager.service.BaseService;

/**
 * @author ：
 * @date ： 2017年6月21日 下午5:31:07
 * @Desc ：订单
 */
public interface OrderInfoService extends BaseService {

	/**
	  * Description:订单搜索功能
	  * @param pageInfo 搜索条件
	  * @param search 搜索框输入的搜索条件
	  * @return 订单列表
	  * @author liushengchao
	  * @date 2017年8月25日上午10:37:26
	 */
	void findList(PageUtils<BaseEntity> pageInfo,String search,Long areaId,String areaNumber,
			String statusStr,List<String> userAreaNumber);
	
	/**
	  * Description:查询结果条数
	  * @param pageInfo 搜索条件
	  * @param search 搜索框输入的搜索条件
	  * @return 该条件下的条目数
	  * @author liushengchao
	  * @date 2017年8月25日上午10:37:26
	 */
	public int getCount(PageUtils<BaseEntity> pageInfo,String search,Long areaId,String areaNumber
			,String statusStr,List<String> userAreaNumber);
	
	/**
	  * Description:厂商端订单新增
	  * @param order 订单信息
	  * @param userId 用户ID
	  * @param userName 用户名称
	  * @throws ServiceException
	  * @author liushengchao
	  * @date 2017年8月30日上午10:04:48
	 */
	public Result addOrder(OrderInfoEntity order) throws ServiceException;
	
	/**
	 * Description:厂商端修改订单
	 * @param order 订单信息
	 * @param userId 当前登录用户 ID
	 * @throws ServiceException
	 * @author liushengchao
	 * @date  2017年8月31日上午11:38:45
	 */
	public Result modifyOrder(OrderInfoEntity order) throws ServiceException;
	
	/**
	 * Description:订单审核
	 * @param orderStatus 订单当前状态
	 * @param ids 订单ID集合
	 * @param facId 厂商ID
	 * @author liushengchao
	 * @date  2017年9月4日上午10:50:51
	 */
	public int checkOrder( String[] ids);
	
	/**
	 * Description:财务审核
	 * @param ids
	 * @return
	 * @author liushengchao
	 * @date  2017年9月14日下午6:15:07
	 */
	public int financialAudit(String []ids);
	
	/**
	 * Description:业务反审核
	 * @param ids
	 * @param remark  反审核原因。
	 * @author liushengchao
	 * @date  2017年9月4日上午11:25:15
	 */
	public int reverseOrder(String[] ids,String remark);
	
	public int delOrder(String[] ids); 
	
	
	/**
	 * Description:查询订单头，分页
	 * @param pageinfo
	 * @author around
	 * @date 2017年9月6日下午10:09:08
	 */
	void findList(PageUtils<OrderInfoEntity> pageinfo);
	
	/**
	 * Description:经销商端新增订单
	 * @param order 订单信息
	 * @param type 订单暂存或新增
	 * @author liushengchao
	 * @date  2017年9月8日上午10:42:31
	 */
	public Result AgencyInsertOrder(OrderInfoVo order,String type);
	
	/**
	 * Description:经销商端修改订单
	 * @param order
	 * @return
	 * @author liushengchao
	 * @date  2017年9月18日上午9:36:51
	 */
	public Result AgencyModifyOrder(OrderInfoEntity order);

	/**
	 * Description:订单作废
	 * @param req
	 * @param resp
	 * @param orderIds 订单ID集合（可多选）
	 * @param orderStatus 订单状态
	 * @author liushengchao
	 * @date  2017年9月26日下午4:24:30
	 */
	public int CancelOrder(String []ids,String remark);
	
	/**
	 * Description:重置业务数据（订单）
	 * @param facId
	 * @return
	 * @author dingjiang
	 * @date 2017年11月6日上午11:51:44
	 */
	public boolean deleteOrder(Long facId);
	
	/**
	 * Description:订单修改后保存并审核
	 * @param order 订单修改后数据
	 * @author liushengchao
	 * @date  2017年10月13日下午2:57:45
	 */
	public Result saveAndCheck(OrderInfoEntity order);
	
	public List<OrderDetailVo> findProductForOrderCopy(String tableName,List<String> skuIds,Long ageId);
}
